home *** CD-ROM | disk | FTP | other *** search
-
-
- LITTLE RED READER Version 2.00 (March 8, 1994)
-
- MS-DOS file reader/writer for the C128 and 1571/81/FD drives
-
- Program and Text by Craig Bruce (csbruce@neumann.uwaterloo.ca)
-
- Interface Changed by Fender Tucker (May 8, 1996)
-
-
- FENDER'S PREMUMBLE: Craig Bruce has introduced several excellent programs
- into the Public Domain and this is one of the most useful. It allows you
- to copy files between IBM computers and Commodore computers. I spent a
- couple of delightful May evenings sprucing the program up, interface-wise,
- but the guts of the program are all Craig's. His excellent docs have been
- slightly edited to reflect the minor changes I might have made. Since
- Craig's program is PD, this version is also. Pass it around to your
- friends and tell them to thank Craig Bruce and LOADSTAR.
-
-
- This program has been improved over version 1.00 to read and write High
- Density MS-DOS disks on the CMD FD-2000 and FD-4000 disk drives. Just
- select drive type "1581" for using these drives. Since the new version has
- greater memory requirements, after starting up "ramdos" (if you use it) you
- will have to execute the "graphic clr" BASIC command.
-
-
- 1. INTRODUCTION
-
- This article presents a program that reads and writes MS-DOS files and the
- root directory of MS-DOS disks. The program copies only from drive to
- drive without buffering file data internally. This is simpler and imposes
- no limits on the size of the files transferred, although it requires the
- use of two disk drives (or a logical drive). The user-interface code is
- written in BASIC and presents a full-screen file selection menu. The
- grunt-work code is written in assembly language and operates at maximum
- velocity.
-
- The program also allows MS-DOS files to be deleted and allows the copying
- of Commodore-DOS files between CBM-DOS disks (this makes it more convenient
- to use the program with a temporary logical drive like RAMDOS). Also, since
- I have a CMD FD-4000 floppy disk drive, I know that this program works with
- MS-DOS disks with this drive (for both the 720K and 1.44M MS-DOS formats).
- The FD disk drives are logically referred to below as being the 1581.
-
- The Burst Command Instruction Set of the 1571/81 is used to read the MS-DOS
- disk blocks and the standard kernel routines are used for outputting the
- data. (I am an operating systems specialist, so I call it a kernEl!) Thus,
- the MS-DOS files must be read from a 1571 or 1581 disk drive, but the
- output device may be any disk drive type, the screen or a printer, or a
- virtual drive type such as RAMLink, RAMDrive, or RAMDOS (for the REU). It
- is interesting to note that the data can be read in from an MS-DOS disk
- faster than it can be written out to a 1571, 1581, or even a RAMDOS file. A
- RAMLink can swallow the data only slightly faster than it can be read.
-
- Little Red Reader (LRR) supports double density 3.5" disks formatted with
- 80 tracks, 9 sectors per track, and 2 sides with a 1581 and 5.25" double
- density disks formatted with 40 tracks, 9 sectors per track, and 2 sides
- with a 1571, and now, high density 3.5" disks formatted with 80 tracks, 18
- sectors per track, 2 sides, and a "12-bit FAT". A limit of 224 directory
- entries and 9 File Allocation Table (FAT) sectors is imposed. There must
- be 2 copies of the FAT and the cluster size may be 1 or 2 sectors. The
- sector size must be 512 bytes.
-
- The program runs on either the 40 or 80-column screens, but you will get
- much better performance from the BASIC portion of the program by being in
- 80-column mode and FAST mode. A modification that someone might want to
- make would be to spread-out the display for the 80-column screen and add
- color to the rather bland display.
-
- FENDER'S NOTE: Maybe blushing pink and crime-scene red weren't the colors
- you had in mind, Craig, but you asked for it. I must say that your code
- was a pleasure to edit.
-
- Oh, about the name. It is a play on the name of another MS-DOS file copier
- available for the C-128. "Little" means that it is smaller in scope than
- the other program, and "Red" is a different primary color to avoid any
- legal complications. It is also the non-white color of the flag of the
- country of origin of this program (no, I am not Japanese). Also, this
- program is Public Domain Software, as is all software I develop for 8-bit
- Commodore Computers. Feel free to E-mail me if you have questions or
- comments about this article.
-
-
- 2. USER GUIDE
-
- LOAD and RUN the "lil red" BASIC program file. When the program is first
- run, it will load in the binary machine language package from the "current"
- Commodore DOS drive (the current drive is obtained from PEEK(186) - the
- last device accessed). The binary package is loaded only on the first run
- and is not reloaded on subsequent runs if the package ID field is in
- place.
-
- The system is designed to have two file selection menus: one for the MS-DOS
- disk drive, and one for the Commodore-DOS disk drive (which may be a
- logical disk drive). The idea for copying is that you select the files in
- one of these menus, and then the program knows to copy them to the disk for
- the other menu.
-
-
- 2.1. MS-DOS MENU
-
- The main screen of the program is first displayed. The main screen of the
- program will look something like this:
-
-
- NUM S TRN TYP FILENAME EXT LENGTH
- --- - --- --- -------- --- ------
- 1 * ASC SEQ HACK4 TXT 120732
- 2 BIN PRG RAMDOS SFX 34923
-
- MS-DOS MS = 10:1581 CBM = 8 BYTES FREE:231456
-
- D - Directory M - MS Device F - CBM Device C - Copy Q=Quit
- T - Toggle All R - Remove X - CBM Copy / - Switch +/- Page
-
- except that immediately after starting up, "Directory not loaded" will be
- displayed rather than filenames. The "MS" fields give the device number
- and type of the drive containing the MS-DOS disk to copy from, and the
- "CBM" gives the device number of the drive/virtual drive/character device
- to copy file data to. The number of bytes free on the drive are also
- displayed (which is useful to know when writing files) and there are some
- more commands.
-
- Information about all MS-DOS files in the root directory of the MS-DOS disk
- is displayed in columns below the drive information. "NUM" gives the
- number of the MS-DOS file in the directory listing, and "S" indicates
- whether the file is "selected" or not. If the file is selected, an
- asterisk (*) is displayed; otherwise, a blank is displayed. When you later
- enter Copy Mode, only the files that have been "selected" are copied.
-
- The "TRN" field indicates the character translation scheme to be used when
- the file is copied. A value of "BIN" (binary) means no translation and a
- value of "ASC" (ascii) means the file characters are to be translated from
- MS-DOS ASCII (or "ASCII-CrLf") to PETSCII. The "TYP" field indicates the
- type of Commodore-DOS file to create for writing the MS-DOS file contents
- into. The possible values are "SEQ" (sequential) and "PRG" (program). The
- values of the TRN and TYP fileds are set independently, so you can copy
- binary data to SEQ files and ascii data to PRG files if you wish.
-
- The "FILENAME" and "EXT" fields give the filename and extension type of the
- MS-DOS files and "LENGTH" gives the exact length of the files in bytes.
- Note that if you perform "ASC" translation on a file, its PETSCII version
- will have a shorter length.
-
- FENDER'S NOTE: Since I am more comfortable with "blocks" rather than
- "bytes" on a CBM disk, I changed the CBM directory to show blocks free
- rather than bytes free. Change line 720 if you prefer bytes for both
- formats.
-
-
- 2.2. USER COMMANDS
-
- The bottom of the screen gives the command summary. After starting the
- program, you will want to set up the MS-DOS and CBM-DOS drives with the "M"
- and "F" commands. Simply press the (letter) key corresponding to the
- command name to activate the command. Pressing M will prompt you for the
- MS-DOS Drive Number and the MS-DOS Drive Type. In both cases, type the
- number and press RETURN. (Sorry for insulting all non-novices out there,
- but I want to be complete). The MS-DOS drive number cannot be the same as
- the CBM-DOS drive number (since the program copies from drive-to-drive
- without internal buffering). For the drive type, enter an "8", "81", or
- "1581" for a 1581 drive or anything else for a 1571 drive.
-
- Pressing F will prompt you for the CBM-DOS device number. You may enter a
- number from 0 to 30, except that it must not be the MS-DOS drive number.
- Enter a "1" for Cassette Drive (God forbid!), a "3" for the screen, a "4"
- for the printer (with an automatic secondary address of 7 (lowercase)), any
- number above 7 for a Commodore disk drive or special virtual drive, or a
- value of "0" for the special "null" drive. A CBM-DEV value of 0 will cause
- the program to read MS-DOS files and do nothing with the output. You can
- use this feature to check out the raw reading speed of the program.
-
- After setting up the drives, press D to read in the root directory off the
- MS-DOS disk. The data will come blazing in from the disk but BASIC will
- take its good ole time sifting through it. The program will (eventually)
- return to the main screen and display the formatted file information. One
- note: the process of logging in a 1581 MS-DOS disk takes about 12 seconds
- (on my 1581, anyway), so be patient. An MS-DOS disk will have to be
- "logged in" every time you change MS-DOS disks. (Disks are logged in
- automatically).
-
- A couple of notes about accessing MS-DOS disks: don't try to access a
- device that is not present because the machine language routines cannot
- handle this error for some reason and will lock up, requiring a
- STOP+RESTORE. Also, make sure that an actual MS-DOS disk is loaded into
- the drive. If you accidentally place Commodore-DOS disk into the MS-DOS
- drive, the 1581 will report an invalid boot parameters error (#60), but a
- 1571 will lock up (since I don't check the sector size and my burst
- routines are expecting 512 bytes to come out of a sector whereas Commodore
- disks have only 256 bytes per sector).
-
- Now you are ready to pick which files you want copied and how you want them
- copied. You will notice that a "cursor" appears in the "S" column of the
- first file. You may move the cursor around with the cursor keys: UP, DOWN,
- LEFT, RIGHT, HOME, and CLR. CLR (SHIFT-HOME) will move the cursor back to
- the first file on the first screen. You can move the cursor among the
- select, translation, and file-type columns of all the files. Pressing a
- SPACE or a RETURN will toggle the value of the field that the cursor is on.
- To toggle all of the values of the "cursor" column (including files on all
- other screens), press T.
-
- If there are more than 13 MS-DOS files, you can press the "+" and "-" keys
- to move among all of the screens of files. The cursor movement keys will
- wrap around on the current screen. "+" is page forward, and "-" is page
- backward. The screens wrap around too.
-
- After you have selected all of the files you want to copy and their
- translation and file-type fields have been set, press the C key to go into
- Copy Mode (next section). After copying, you are returned to the main
- screen with all of the field settings still intact. To exit from the
- program, press Q.
-
- Additional commands are: "R" (remove == delete), "/" (switch from MS to CBM
- and vice versa), and "X" (copy CBM files == "Xerox"). The remove command is
- used to delete selected files from the MS-DOS disk. After selecting this
- option, you will get an annoying "are you sure" question and the the
- selected files will quickly disappear and the changes will finally be
- written to disk. Deleting a batch of MS-DOS files is much quicker than
- deleting Commodore-DOS files since MS-DOS disks use a File Allocation Table
- rather than the linked list of blocks organization that CBM uses. In order
- to make the BASIC program execute quicker, after deleting, the original
- order of the filenames in the directory listing will be changed. Be
- forewarned that the delete operation is non-recoverable.
-
- The "Switch" command is used to move back and forth between the Commodore-
- DOS and MS-DOS menus.
-
- End of Part One of LI'L RED READER docs
-
- \\\\\ R - Run RETURN - Menu \\\\\
-
-